import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './routes'
// 引入增强路由的文件，不涉及任何模块，只是一个可执行文件
import './extendApi'
import { getToken, clearToken } from '@/utils/storage'
import store from '@/store'
Vue.use(VueRouter)
const router = new VueRouter({
  routes,
  scrollBehavior (to, from, savedPosition) {
    if (savedPosition) {
      return savedPosition
    } else {
      return { x: 0, y: 0 }
    }
  }
})

// const svip = false
const whiteList = ['/trade', '/pay', '/paysuccess', '/ordercenter']
router.beforeEach((to, from, next) => {
  const token = getToken()
  const userName = store.state.userName
  // console.log(token)

  if (token) {
    // 如果有用户信息，允许访问路由
    if (userName) {
      next()
      // 如果没有用户信息，先去获取用户信息
      // 再放行!
    } else {
      store.dispatch('userInfo/getUserInfo')
        .then((res) => {})
        // 当获取用户信息失败的时候，说明token失效，捕获错误并清除本地存储中的token
        // 跳转到登录页面，让用户重新登录
        .catch(() => {
          clearToken()
          next('/login')
        })
      next()
    }
  } else {
    // 当没有携带token时
    // 如果用户访问的是白名单中的敏感路由，让其跳转到登录页面
    // 如果不是敏感路由，则正常访问
    if (whiteList.includes(to.path)) {
      next('/login')
    }
    next()
  }
})

export default router
